#ifndef _DATA_STRUCTURE_H_
#define _DATA_STRUCTURE_H_
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
typedef unsigned int uint;
class gewVec2
{
public:
	gewVec2(){x=0;y=0;}
	gewVec2(float _x,float _y){x=_x;y=_y;}
	bool operator ==(gewVec2& rhs);
	float x,y;
};
class gewVec3
{
public:
	gewVec3(){x=0;y=0;z=0;}
	gewVec3(float _x,float _y,float _z){x=_x;y=_y;z=_z;}
	gewVec3(const gewVec3& rhs);
	gewVec3(gewVec3* rhs);
	void setX(float _x){x=_x;}
	void setY(float _y){y=_y;}
	void setZ(float _z){z=_z;}
	float getX(){return x;}
	float getY(){return y;}
	float getZ(){return z;}
	void operator =(const gewVec3&rhs){x=rhs.x;y=rhs.y;z=rhs.z;}
	bool operator ==(gewVec3& rhs);
	gewVec3 operator +(gewVec3& rhs);
	void operator +=(gewVec3& rhs);
	gewVec3 operator -(gewVec3& rhs);
	void operator -=(gewVec3& rhs);
	gewVec3 operator *(float factor);
	void operator *=(float factor);
	gewVec3 operator /(float factor);
	void operator /=(float factor);
	void normalize();
	float getLength();
	float getLengthSquare();
	float x,y,z;
};
typedef vector<gewVec3> arrayVec3;
typedef vector<gewVec2> arrayVec2;
typedef vector<int> arrayInt;
typedef vector<float> arrayFloat;
#endif